This invention relates to computer-implemented methods for processing electronic images and computer program products implementing such methods.
In conventional computer graphics or illustration programs, such as Adobe Illustrator, available from Adobe Systems Incorporated of San Jose, Calif., an image can include multiple graphical elements representing, e.g., shapes, objects or other components of the image. In general, vector illustration programs create and manipulate graphics in which such graphical elements are represented as vector objects that have attributes that define the visual characteristics of the corresponding graphical element in the image, such as location, color, size, shape, orientation, transparency, and the like, based on a set of attribute values that specify the amount of the corresponding attributes. Vector objects describe graphics mathematically, using, e.g., lines and curves that define their geometric characteristics. For example, a bicycle tire in a vector graphic is made up of a mathematical definition of a circle drawn with a certain radius, set at a specific location, and filled with a specific color. Vector objects can be edited—e.g., the location, size, or color can be changed—by changing attribute values associated with the object.
By contrast, many painting and image-editing programs, such as Adobe Photoshop, generate and manipulate bitmap or raster images. Raster images use a grid of pixels to represent graphics, with each pixel having a specific location and color value. A bicycle tire in a bitmap image is made up of a collection of pixels, with each pixel forming part of a mosaic that gives the appearance of a tire. A raster image is edited by editing pixels (i.e., by changing color or opacity values associated with a pixel), rather than objects or shapes.
While different vector objects in an image may share common attributes—for example, vector objects instantiated from a common class or template—conventional illustration programs typically treat each vector object instance as an independent entity and do not provide for relationships to be defined between vector objects when added to an image. Thus, to change the appearance of one or more vector objects, a user typically must select the desired vector objects after they have been added to an image and adjust the value of the particular attribute or attributes in question for the selected vector objects—for example, by manually performing some appropriate operation in a graphical user interface (which may include entering a new attribute value directly or manipulating appropriate graphical illustration tools to effect the desired change).
Some illustration programs provide for the creation of relationships between vector objects in an image. In some illustration programs, users can “group” unrelated objects into groups—for example, by selecting two or more vector objects in the image and invoking a “Group” command to relate the selected vector objects as a group. Typically, the grouped vector objects are thereafter treated as a single object (at least until an “Ungroup” command is invoked), such that a change to one part of the group is equally applied to the entire group. Similarly, some illustration programs provide for the creation of “links” between vector objects, such that one or more attributes of the linked elements are tied together—for example, by providing that size attributes of linked vector objects will have equal values, such that a change in the size attribute of one vector object will be applied to the other so that the sizes remain equal. Relationships can also be defined between vector objects in some conventional illustration programs through the use of an auto align command or tool, which can allow a user to quickly and easily align vector objects in an image (i.e., specific alignment relationships can be defined between selected vector objects). The auto align tool can also work while drawing new vector objects—for example, with the auto align tool selected, alignment feedback can be provided to a user when placing the new vector object in the image.